package com.example.demo.vo;


import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 工作卡查询
 * @author xpf
 */
@Data
public class WorkCardReqVO  {


    /**
     * 每页数量
     */
    private int pageSize = 20;

    /**
     * 页码，从1开始
     */
    private int currentPage = 1;

    private int offest;
    @JsonSerialize(using= ToStringSerializer.class)
    private List<Long> vesselIds;

    /**
     * 月度
      */
    private Date monthDate;

    /** 船舶
    *
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long vesselId;

    private String vesselName;

    @JsonSerialize(using= ToStringSerializer.class)
    private Long companyId;

    @JsonSerialize(using= ToStringSerializer.class)
    private Long qualityRecordRootId;

    @JsonSerialize(using= ToStringSerializer.class)
    private List<Long> workCardIds;

    @JsonSerialize(using= ToStringSerializer.class)
    private List<Long> devJobIds;

    //form code
    private String formCode;

    //关键字
    private String keyWord;

    /**
     * 设备编码或名称
     */
    private String devName;

    /**
     * 工作编码或名称
     */
    private String workName;

    /**
     * 工单编码或名称
     */
    private String workOrderNo;

    //船端部门ID
    private Long vesselDeptId;

    //船端岗位ID
    @JsonSerialize(using= ToStringSerializer.class)
    private Long vesselPostId;

    //计划日期查询-开始日期
    private Date planStartTime;
    //计划日期查询-结束日期
    private Date planEndTime;

    //报告工作日期查询-开始日期
    private Date completedStartTime;
    // 报告工作日期查询-结束日期
    private Date completedEndTime;

    //最早完成日期查询-开始日期
    private Date firstStartTime;
    //最早完成日期查询-结束日期
    private Date firstEndTime;

    //最晚完成日期查询-开始日期
    private Date latestStartTime;
    //最晚完成日期查询-结束日期
    private Date latestEndTime;

    // 岸基审批日期
    private Date shoreApproveDate;
    // 岸基审批人
    private String shoreApprovePerson;
    // 船端审批日期
    private Date vesselApproveDate;
    // 船端审批人
    private String vesselApprovePerson;

    // 船端审批日期查询-开始日期
    private Date vesselApproveStartTime;
    // 船端审批日期查询-结束日期
    private Date vesselApproveEndTime;

    //岸基审批日期查询-结束日期
    private Date shoreApproveStartTime;
    //岸基审批日期查询-结束日期
    private Date shoreApproveEndTime;

    /**
     * 工作类型
     */
    private String workCardType;

    //仅查询超期工单
    private Boolean onlyOverDue;

    //仅即将到期工单，包含超期
    private Boolean onlyUpcoming;

    //仅仅查询存在岸基主管标记为提醒的工单，主要是针对历史工单
    private boolean onlyAlertFlag;

    /**
     * 工单完成状态  0 未完成 ，1 按期 2 超期 3 提前  4 审批中
     */
    private String completeStatus;

    /**
     * 1 待完成， 2 船端 ， 3 岸基
     */
    private String quickQueryState;

    /**
     * 检验要求工作
     */
    private Boolean surveyFlag;

    /**
     * 关键设备
     */
    private Boolean criticalFlag;

    /**
     * 群发临时工单监控-完成状态 0未完成，对应工单状态1计划2安排5遗留6取消，1完成，对应工单状态3审批中4完成
     */
    private String completeFlag;

    private String workCardStatus;

    private Boolean safetyFlag;

    private List<Long> devVesselCodeIdList;

    private Boolean importantFlag;

    private Boolean riskFlag;

    private String maintClass;

    private String maintType;

    private Object[] searchAfter;
}